/**当前登录信息 */
import { defineStore } from 'pinia'

interface LoginInfo {
  OAOutIp: string; // OA系统外网地址
  OARefreshToken: string; // 认证中心刷新Token
  bLogin: string | boolean; // 是否登录成功 TODO boolean | string
  sUser: string; // 当前用户编码
  sIMSI: string; // 移动设备唯一编码
  sStoreId: string; // 当前机构代码
  sStoreName: string; // 当前机构名称
  sStoreHier: string; // 当前机构类型
  sUserName: string; // 当前用户名称
  sDepartLimit: string; // 有权限的部门，多个部门之间用逗号隔开
  sGClassLimit: string; // 有权限的分类，多个分类之间用逗号隔开
  sStoreLimit: string; // 有权限的机构，多个机构之间用逗号隔开
  sCurrentAdno: string; // 用户默认部门
  sUserStore: string; // 用户默认机构编码
  sUserStoreName: string; // 用户默认机构名称
  sUserStoreHier: string; // 用户默认机构类型
  sSystemMode: string; // 系统架构模式
  sUserImageUrl: string; // 用户头像url
}

interface State {
  loginInfo: LoginInfo;
}

export const useLogin = defineStore('login', {
  state: (): State => ({
    loginInfo: {
      OAOutIp: '', // OA系统外网地址
      OARefreshToken: '', // 认证中心刷新Token
      bLogin: '', // 是否登录成功
      sUser: '', // 当前用户编码
      sIMSI: '', // 移动设备唯一编码
      sStoreId: '', // 当前机构代码
      sStoreName: '', // 当前机构名称
      sStoreHier: '', // 当前机构类型
      sUserName: '', // 当前用户名称
      sDepartLimit: '', // 有权限的部门，多个部门之间用逗号隔开
      sGClassLimit: '', // 有权限的分类，多个分类之间用逗号隔开
      sStoreLimit: '', // 有权限的机构，多个机构之间用逗号隔开
      sCurrentAdno: '', // 用户默认部门
      sUserStore: '', // 用户默认机构编码
      sUserStoreName: '', // 用户默认机构名称
      sUserStoreHier: '', // 用户默认机构类型
      sSystemMode: '', // 系统架构模式
      sUserImageUrl: '', // 用户头像url
    }
  }),
  actions: {
    getSystemInfo() {
      try {
        const res = uni.getSystemInfoSync();
        return res
      } catch (e) {
        // error
      }
    },
    setLoginInfo(req: LoginInfo) {
      this.loginInfo = { ...this.loginInfo, ...req };
    }
  },
})